home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh1x
/
sh19.d64
/
simplex 64 v.16
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
6KB
|
322 lines
100 REM ****************************
110 REM * *
120 REM * SIMPLEX 64 *
130 REM * *
140 REM * BY *
150 REM * *
160 REM * M. BUHTZ *
170 REM * *
180 REM * GRAFENRING 13 *
190 REM * 4230 WESEL *
200 REM * TEL.:0281/22431 *
210 REM * *
220 REM ****************************
230 :
240 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT
250 PRINT" 80 ZEICHENKARTE ? (J/N)"
260 GETA$
270 IFA$="J"THEN W=5:GOTO300
280 IFA$="N"THEN W=1:GOTO300
290 GOTO260
300 PRINT:PRINT:PRINT
310 PRINT" DRUCKERAUSGABE ? (J/N)":PRINT
320 GETA$
330 IFA$="N"THEN410
340 IFA$="J"THENE1=1:GOTO360
350 GOTO320
360 PRINT" ALLE LOESUNGEN ? (1)":PRINT
370 PRINT" NUR OPTIMUM ? (2)"
380 GETE$
390 IFE$<>"1"ANDE$<>"2"THEN380
400 IFE$="2"THENE1=2
410 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
420 INPUT" ANZAHL STRUKTURVARIABLEN ";N
430 PRINT
440 INPUT" ANZAHL RESTRIKTIONEN ";M
450 M=M+1
460 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
470 DIM A(M,N),B(M,N),E(M),X$(N),X1$(N),Y$(M),Y1$(M)
480 PRINT" FREIE STRUKTURVARIABLEN ? (J/N)"
490 GETA$
500 IFA$="J"THENDIM SP$(N) :GOTO 530
510 IFA$="N"THEN610
520 GOTO490
530 :
540 PRINT"[147] FREIE STRUKTURVARIABLEN[146]":PRINT
550 FORI=1TON
560 PRINT" IN SPALTE"I"? (J/N)"
570 GETA$
580 IFA$=""THEN570
590 IFA$="J"THENSP$(I)="J"
600 NEXTI
610 :
620 PRINT"[147] SIMPLEX 64[146]":PRINT:PRINT:PRINT:PRINT
630 PRINT" GESPERRTE SCHLUPFVARIABLEN ? (J/N)"
640 GETA$
650 IFA$="J"THENDIMZ$(M):GOTO680
660 IFA$="N"THEN770
670 GOTO640
680 :
690 PRINT"[147] GESPERRTE SCHLUPFVARIABLEN[146]":PRINT
700 FORI=1TOM-1
710 PRINT" IN ZEILE"I"? (J/N)"
720 GETA$
730 IFA$=""THEN720
740 IFA$="J"THENZ$(I)="J"
750 NEXTI
760 :
770 REM *** EINGABE KOEFFIZIENTEN ***
780 :
790 FORI1=1TONSTEPW+1
800 PRINT"[147]"
810 PRINT,"*** SIMPLEX TABLEAU ***" :PRINT
820 X$(0)="RS "
830 PRINT,
840 I2=I1+W
850 IFI2>=NTHENI2=N
860 FORI=I1TOI2
870 X$(I)="X":X1$(I)=STR$(I):X$(I)=X$(I)+X1$(I)
880 PRINT"X"I,
890 NEXTI
900 IFI>NTHENPRINT"RS ",
910 J1=J2+1
920 J2=J1+W
930 IFJ2>=NTHENJ2=N
940 PRINT
950 FORI=0TOM-1
960 Y$(I)="Y":Y1$(I)=STR$(I):Y$(I)=Y$(I)+Y1$(I)
970 IFI=0THENPRINT:PRINT;" Z";:GOTO1000
980 IFI=1THENPRINT
990 PRINT:PRINT;"Y"I;
1000 FORJ=J1TOJ2
1010 PRINT,;:POKE19,1:INPUTA(I,J):POKE19,0
1020 NEXTJ
1030 IFJ>NTHENPRINT,"";:POKE19,1:INPUTA(I,0):POKE19,0
1040 NEXTI
1050 NEXTI1
1060 IFE1<>0THENGOSUB2790
1070 :
1080 REM*** PHASE 0' S(SPALTE) ***
1090 :
1100 FORI=1TON
1110 IFSP$(I)="J"THENS=I:SP$(I)="S":GOTO1170
1120 NEXTI
1130 GOTO1220
1140 :
1150 REM*** PHASE 0' R(ZEILE) ***
1160 :
1170 R=INT(RND(1)*M)+1:T=T+1
1180 IFZ$(R)="S"ORA(R,S)=0THEN1170
1190 IFT>100THEN2440
1200 T=0:GOTO1850
1210 :
1220 REM*** PHASE 0 R(ZEILE) ***
1230 :
1240 FORI=1TOM-1
1250 IFZ$(I)="J"THENR=I:Z$(I)="S":GOTO1310
1260 NEXTI
1270 GOTO1360
1280 :
1290 REM*** PHASE 0 S(SPALTE) ***
1300 :
1310 S=INT(RND(1)*N)+1:T=T+1
1320 IFSP$(S)="S"ORA(R,S)=0THEN1310
1330 IFT>100THEN2530
1340 T=0:GOTO1850
1350 :
1360 REM *** PHASE 1 R(ZEILE) ***
1370 :
1380 S=0:R=0
1390 FORI=1TOM-1
1400 IFA(I,0)<0THENR=I:GOTO1450
1410 NEXTI:GOTO1520
1420 :
1430 REM*** PHASE 1 S(SPALTE) ***
1440 :
1450 S=INT(RND(1)*N)+1:T=T+1
1460 IFT>100THEN2620
1470 IFA(R,S)>=0THEN1450
1480 IFR<>0THENT=0:GOTO 1850
1490 :
1500 REM *** PHASE 2 S(SPALTE) ***
1510 :
1520 S=0:R=0
1530 IFA(0,1)<0THENS=1
1540 FORJ=2TON
1550 IFA(0,J)>=0 OR A(0,J)>A(0,J-1) THEN 1570
1560 S=J
1570 NEXT J
1580 IFS>0THEN1710
1590 EE=1
1600 IFE1=2THENGOSUB2800
1610 PRINT
1620 PRINT" **** RECHNUNG BEENDET ****"
1630 PRINT" **** OPTIMUM ****"
1640 IFE1=0THEN1670
1650 OPEN4,4:PRINT#4:PRINT#4,CHR$(16)"11**** RECHNUNG BEENDET ****"
1660 PRINT#4,CHR$(16)"11**** OPTIMUM ****":PRINT#4:CLOSE4
1670 GETA$
1680 IFA$<>""THEN2070
1690 GOTO1670
1700 :
1710 REM *** PHASE 2 R(ZEILE) ***
1720 :
1730 FORI=1TOM-1
1740 IFA(I,S)<=0THENE(I)=10^38:GOTO1760
1750 E(I)=A(I,0)/A(I,S)
1760 NEXTI
1770 IFE(1)>0THENR=1:GOTO1790
1780 E(1)=10^38
1790 FORI=2TOM-1
1800 IFE(I)<=0 OR E(I)>=E(I-1)THEN 1820
1810 R=I:GOTO1850
1820 NEXTI
1830 IFR<>1THEN2710
1840 :
1850 REM *** UMRECHNUNG ***
1860 :
1870 ZW$=X$(S):X$(S)=Y$(R):Y$(R)=ZW$
1880 B(R,S)=1/A(R,S)
1890 :
1900 FORJ=0TON
1910 IFJ=STHEN1930
1920 B(R,J)=A(R,J)/A(R,S)
1930 NEXTJ
1940 :
1950 FORI=0TOM-1
1960 IFI=RTHEN1980
1970 B(I,S)=-A(I,S)/A(R,S)
1980 NEXTI
1990 :
2000 FORI=0TOM-1
2010 FORJ=0TON
2020 IFJ=S OR I=RTHEN2040
2030 B(I,J)=A(I,J)-A(I,S)*B(R,J)
2040 NEXTJ
2050 NEXTI
2060 :
2070 REM *** UMGERECHNETES SIMPLEX TABLEAU ***
2080 :
2090 IT=IT+1
2100 I1=0:I2=0:J1=0:J2=0
2110 FORI1=1TONSTEPW+1
2120 IFN<=W+1THEN2130
2130 PRINT"[147]"
2140 PRINT" *** SIMPLEX TABLEAU "IT"[157].ITERATION ***":PRINT
2150 PRINT,
2160 I2=I1+W
2170 IFI2=>NTHENI2=N
2180 FORI=I1TOI2
2190 PRINTX$(I),
2200 NEXTI
2210 IFI>NTHENPRINTX$(0)
2220 J1=J2+1
2230 J2=J1+W
2240 IFJ2>=NTHENJ2=N
2250 FORI=0TOM-1
2260 PRINT:PRINTY$(I);
2270 FORJ=J1TOJ2
2280 A(I,J)=B(I,J)
2290 A(I,0)=B(I,0)
2300 PRINT,"";:PRINTINT(A(I,J)*100+.5)/100;
2310 NEXTJ
2320 IFJ>NTHENPRINT,"";:PRINTINT(A(I,0)*100+.5)/100
2330 NEXTI
2340 IFEE<>1ORI1>=NTHEN2370
2350 GETA$
2360 IFA$=""THEN2350
2370 NEXTI1
2380 :
2390 IFE1=1THENGOSUB2790
2400 GOTO1070
2410 :
2420 REM *** MELDUNGEN ***
2430 :
2440 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0' ***"
2450 PRINT" *** LINEARKOMBINATION SPALTEN ***"
2460 IFE1=2THENGOSUB2800
2470 IFE1=0THENEND
2480 OPEN4,4:PRINT#4
2490 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0' ***"
2500 PRINT#4,CHR$(16)"11*** LINEARKOMBINATION SPALTEN ***"
2510 PRINT#4:CLOSE4:END
2520 :
2530 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 0 ***"
2540 PRINT" *** LINEARKOMBINATION ZEILEN ***"
2550 IFE1=2THENGOSUB2800
2560 IFE1=0THENEND
2570 OPEN4,4:PRINT#4
2580 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 0 ***"
2590 PRINT#4,CHR$(16)"11*** LINEARKOMBINATION ZEILEN ***"
2600 PRINT#4:CLOSE4:END
2610 :
2620 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 1 ***"
2630 PRINT" *** KEINE ZULAESSIGE LOESUNG ***"
2640 IFE1=2THENGOSUB2800
2650 IFE1=0THENEND
2660 OPEN4,4:PRINT#4
2670 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 1 ***"
2680 PRINT#4,CHR$(16)"11*** KEINE ZULAESSIGE LOESUNG ***":PRINT#4:CLOSE4:END
2690 PRINT#4:CLOSE4:END
2700 :
2710 PRINT:PRINT" *** RECHNUNG ABGEBROCHEN PHASE 2 ***"
2720 PRINT" *** KEINE BEGRENZTE LOESUNG ***"
2730 IFE1=2THENGOSUB2800
2740 IFE1=0THENEND
2750 OPEN4,4:PRINT#4
2760 PRINT#4,CHR$(16)"11*** RECHNUNG ABGEBROCHEN PHASE 2 ***"
2770 PRINT#4,CHR$(16)"11*** KEINE BEGRENZTE LOESUNG ***":PRINT#4:CLOSE4:END
2780 PRINT#4:CLOSE4:END
2790 :
2800 REM *** DRUCKERAUSGABE ***
2810 :
2820 OPEN4,4
2830 I2=0:J1=0:J2=0
2840 FORI1=1TONSTEP4
2850 PRINT#4,CHR$(10)
2860 PRINT#4,CHR$(16)"10*** SIMPLEX TABLEAU"IT".ITERATION ***"
2870 PRINT#4
2880 I2=I1+3
2890 IFI2>=NTHENI2=N
2900 Z=0
2910 FORI=I1TOI2
2920 Z=Z+1
2930 ONZGOSUB3260,3270,3280,3290,3300
2940 :
2950 NEXTI
2960 IFI<=NTHEN2990
2970 I=0:Z=Z+1
2980 ONZGOSUB3260,3270,3280,3290,3300
2990 J1=J2+1
3000 J2=J1+3
3010 IFJ2>=NTHENJ2=N
3020 PRINT#4
3030 FORI=0TOM-1
3040 IFI=0THENPRINT#4:PRINT#4," Z",:GOTO3070
3050 IFI=1THENPRINT#4
3060 PRINT#4:PRINT#4,Y$(I),
3070 Z=0
3080 FORJ=J1TOJ2
3090 IFIT=0THEN3120
3100 A(I,J)=B(I,J)
3110 A(I,0)=B(I,0)
3120 Z=Z+1
3130 ONZGOSUB3210,3220,3230,3240,3250
3140 NEXTJ
3150 IFJ<=NTHEN3180
3160 J=0:Z=Z+1
3170 ONZGOSUB3210,3220,3230,3240,3250
3180 NEXTI
3190 NEXTI1
3200 PRINT#4:CLOSE4:RETURN
3210 PRINT#4,CHR$(16)"13"INT(A(I,J)*100+.5)/100;:RETURN
3220 PRINT#4,CHR$(16)"26"INT(A(I,J)*100+.5)/100;:RETURN
3230 PRINT#4,CHR$(16)"39"INT(A(I,J)*100+.5)/100;:RETURN
3240 PRINT#4,CHR$(16)"52"INT(A(I,J)*100+.5)/100;:RETURN
3250 PRINT#4,CHR$(16)"65"INT(A(I,J)*100+.5)/100;:RETURN
3260 PRINT#4,CHR$(16)"14"X$(I);:RETURN
3270 PRINT#4,CHR$(16)"27"X$(I);:RETURN
3280 PRINT#4,CHR$(16)"40"X$(I);:RETURN
3290 PRINT#4,CHR$(16)"53"X$(I);:RETURN
3300 PRINT#4,CHR$(16)"66"X$(I);:RETURN